﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Drawing;

using System.Drawing.Imaging;

using System;
using System.Collections.Generic;
using System.ComponentModel;

using System.Text;

using System.IO;

using AForge.Imaging.Formats;

namespace Bildverarbeitung
{
class KömpelMichaelFilter : IFilter
{
    public Bitmap GetSummerizedDifferencefromAverage(Bitmap[] images)
    {

        // auslesen der Bildanzahl
        int anzahl_bilder = images.Length;

        //System.Drawing.Color durchschnittswert = new System.Drawing.Color.FromArgb(255, 0, 0);
//        Color durchschnittswert = new  Color.FromArgb(0, 0, 0);

        Color durchschnittswert = new Color();


        durchschnittswert.ToKnownColor();
        //durchschnittswert = durchschnittswert.ToArgb(durchschnittswert);
            //. 0, 0, 0, 0);

        int durchschnittswert_rot;
        int durchschnittswert_grün;
        int durchschnittswert_blau;

        int höhe;
        int breite;
 //System.Drawing.Bitmap durchschnittsbild;

        //System.Drawing.Bitmap durchschnittsbild;


  
        durchschnittswert_rot = 0;
        durchschnittswert_grün = 0;
        durchschnittswert_blau = 0;

        //durchschnittsbild = new System.Drawing.Bitmap(images[0].Width, images[0].Height);

        Bitmap durchschnittsbild = (Bitmap)images[0].Clone();
        // durchschnittswert = durchschnittsbild.GetPixel();
 
        
        höhe = 0;
        breite = 0;

        short[,] filter_matrix = new short[3, 3] 
        {
                                    { 1, 1, 1 },
                                    { 1, 1, 1 },
                                    { 1, 1, 1 }
        };

        // durschnittsbild.
        //image = (Bitmap)Bitmap.FromFile(fileName);

        //AForge.Imaging.Image.FormatImage(ref image);

        //System.Drawing.Bitmap newImage = filter.Apply(image);

        // durchschnittswert = 0;
        //  durchschnittswert.


        for (int x = 0; x < anzahl_bilder; x++)
        {
            höhe = images[x].Height;
            breite = images[x].Width;

            for (int nr_ak_B = 0; nr_ak_B < anzahl_bilder; nr_ak_B++)
            {
                
                for (int u = 0; u < breite; u++)
            {

                for (int v = 0; v < höhe; v++)
                {

                    durchschnittswert_rot = (int)(durchschnittsbild.GetPixel(u, v).R + images[nr_ak_B].GetPixel(u, v).R) / anzahl_bilder;

                    durchschnittswert_grün = (int)(durchschnittsbild.GetPixel(u, v).G + images[nr_ak_B].GetPixel(u, v).G) / anzahl_bilder;

                    durchschnittswert_blau = (int)(durchschnittsbild.GetPixel(u, v).B + images[nr_ak_B].GetPixel(u, v).B) / anzahl_bilder;


                        durchschnittswert = Color.FromArgb(
                (int)(durchschnittswert_rot),
                (int)(durchschnittswert_grün), 
                (int)(durchschnittswert_blau) );



                       //durchschnittswert.R = durchschnittswert_rot;
                            
                        //durchschnittswert.B = durchschnittswert_grün;

                        //durchschnittswert.G = durchschnittswert_blau;


                        //durchschnittsbild.SetPixel(u, v, Color (0,0,0) );

                        durchschnittsbild.SetPixel(u, v, durchschnittswert); //durchschnittswert(0, 0, 0, 0));

                        durchschnittswert_rot = 0 ;
                        durchschnittswert_grün = 0;
                        durchschnittswert_blau = 0;

                        // durchschnittswert. = durchschnittswert +  images[nr_ak_B].GetPixel(u,v); 
                                
                            //  ) / anzahl_bilder;
                            
                        // [nr_ak_B] images.GetPixel(u, v)) / anzahl_bilder;
                        // durchschnittswert = images[nr_ak_B].GetPixel(u,v).;
                    }

                    // image.setpixel(u,v) = (bilder[0](u,v)+bilder[1](u,v)+bilder[2](u,v) ) / 3
                    //durchschnittsbild.setpixel(u, v, durchschnittswert);
                    //durchschnittsbild.SetPixel();

                }
                    
            }
        }
        return durchschnittsbild;


    }

    public String GetName()
    {
        return "KömpelMichael";
    }
}
}
